package q75_sortColors;

import java.util.Arrays;

public class Solution_1 {
    public static void main(String[] args) {
        Solution_1 s = new Solution_1();
        int[] arr = new int[]{2,1};
        s.sortColors(arr);
        System.out.println(Arrays.toString(arr));
    }

    /**
     * 此题简单的想法：
     * 只需要先设置一个头指针,然后开始遍历，发现0的时候与头指针交换数值，头指针加一，一次循环下来，所有0都会到达数组最前
     * 然后将头指针转为尾指针，然后在开始遍历，发现2的时候与尾指针交换数值，尾指针减一，一次循环下来，所有2也到达了数组最后。
     * @param nums
     */
    public void sortColors(int[] nums) {
        int header = 0;
        for (int i = 0; i < nums.length; i++) {
            if (nums[i] == 0){
                int temp = nums[header];
                nums[header] = 0;
                nums[i] = temp;
                header++;
            }
        }
        header = nums.length - 1;
        for (int j = header; j >= 0; j--) {
            if (nums[j] == 2){
                int temp = nums[header];
                nums[header] = 2;
                nums[j] = temp;
                header--;
            }
        }
    }
}
